/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ingresostogema;
   
import java.io.File;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.DecimalFormat;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javscazutilidades.Mensajeria;

/*
 *
 * @author avbravo
 */
public class Sesion implements Serializable {

    static String servidorFTP = "ftp://enazuero:251077362188@ftp.enazuero.com/public_html/avbravo/ingresos/";
    static String version;
    static String username;
    static String usuario;
    static String idgrupousuario;
    static String idmunicipio;
    static String setupIdMunicipio; //idmunicpio del archivo municipios.xml
    static String look;
    static String error;
    static String municipio;
    static String idprovincia;
    static String sistemaOperativo;
    static String rutaReportes;
    static String rutaDestino;
    static String rutaDescarga;
    static String rutaBackup;
    /*
     * datos del servidor.xml
     */
    static String server = "localhost:3306";
    static String databaseDB = "sirmupadb";
    static String puertoDB = "3306";
    static String userDB = "root";
    static String passwordDB = "denver";
    static String java_home = "c:\\Archivos de programa\\java\\jdk1.6.0_11";
    static String mysql_home = "c:\\Archivos de programa\\MySQL\\MySQL Server 5.0\\bin";
    String faseEncriptacion = "caballo de troya 16$";
    String driver = "org.gjt.mm.mysql.Driver";
    public Connection con = null;
    static String ArrayMeses[] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"};
    static String CedulaContribuyente;
    static String CedulaTesoreroAuxiliar;
    static String idComercio;
    static String IdVehiculo;
    static int IdRemolque;
    static String Placa;
    static String IdRegimen;
    static String Regimen;
    static String PeriodoPago;
    static int Anio;
    static String id;
    static String TipoId;
    static String Seleccionado;
    //static String IdRegimenRecargo
//Numero de registros que caben en un recibo
    static int RegistrosPorRecibo = 7;
    static int AnioRecibo = 0;
    static int NumeroMesRecibo = 0;
    static int NumeroMaximoRegistrosPorRecibo = 21;
    public static ImageIcon imagenFondo;
    static String MensajeActualizarModulos = "";
    public static String ArrayRecibosTableIdRegimen[] = new String[NumeroMaximoRegistrosPorRecibo];
    /*
     * se usan para gestionar los registros que se muestran
     * en la tabla de pagos
     * el tamaño sera de 21, que debe ser el maximo de impuestos a pagar
     * ya que se podran usar hasta tres recibos
     */
    public static String ArrayRecibosTableRegimen[] = new String[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableValor[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableDeuda[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTablePagos[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableSaldo[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableExoneracion[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static String ArrayRecibosTableEstatus[] = new String[NumeroMaximoRegistrosPorRecibo];
    public static String ArrayRecibosTablePeriodo[] = new String[NumeroMaximoRegistrosPorRecibo];
    public static int ArrayRecibosTableCantidad[] = new int[NumeroMaximoRegistrosPorRecibo];
    public static String ArrayRecibosTableEsRecargo[] = new String[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableSoloMorosidad[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static Double ArrayRecibosTableSaldoAnterior[] = new Double[NumeroMaximoRegistrosPorRecibo];
    public static String ArrayRecibosTableComentario[] = new String[NumeroMaximoRegistrosPorRecibo];
    static int NumeroRegistrosRecibosTable = 0;
    //Versiones
    public static String versionWebIngresos = "";
    //Local
    public static String versionLocalIngresos = "";
    DecimalFormat formateador = new DecimalFormat("#########.##");

    public static String getCedulaTesoreroAuxiliar() {
        return CedulaTesoreroAuxiliar;
    }

    public static void setCedulaTesoreroAuxiliar(String CedulaTesoreroAuxiliar) {
        Sesion.CedulaTesoreroAuxiliar = CedulaTesoreroAuxiliar;
    }



    public DecimalFormat getFormateador() {
        return formateador;
    }

    public void setFormateador(DecimalFormat formateador) {
        this.formateador = formateador;
    }

    public static String getSetupIdMunicipio() {
        return setupIdMunicipio;
    }

    public static void setSetupIdMunicipio(String setupIdMunicipio) {
        Sesion.setupIdMunicipio = setupIdMunicipio;
    }

    public static String getServidorFTP() {
        return servidorFTP;
    }

    public static void setServidorFTP(String servidorFTP) {
        Sesion.servidorFTP = servidorFTP;
    }

    public static int getIdRemolque() {
        return IdRemolque;
    }

    public static void setIdRemolque(int IdRemolque) {
        Sesion.IdRemolque = IdRemolque;
    }

    public static String getIdVehiculo() {
        return IdVehiculo;
    }

    public static void setIdVehiculo(String IdVehiculo) {
        Sesion.IdVehiculo = IdVehiculo;
    }

    public static String getPlaca() {
        return Placa;
    }

    public static void setPlaca(String Placa) {
        Sesion.Placa = Placa;
    }

    public static String getIdComercio() {
        return idComercio;
    }

    public static void setIdComercio(String idComercio) {
        Sesion.idComercio = idComercio;
    }

    public static String getMysql_home() {
        return mysql_home;
    }

    public static void setMysql_home(String mysql_home) {
        Sesion.mysql_home = mysql_home;
    }

    public static String getMensajeActualizarModulos() {
        return MensajeActualizarModulos;
    }

    public static void setMensajeActualizarModulos(String MensajeActualizarModulos) {
        Sesion.MensajeActualizarModulos = MensajeActualizarModulos;
    }

    public String getFaseEncriptacion() {
        return faseEncriptacion;
    }

    public void setFaseEncriptacion(String faseEncriptacion) {
        this.faseEncriptacion = faseEncriptacion;
    }

    public static String getJava_home() {
        return java_home;
    }

    public static void setJava_home(String java_home) {
        Sesion.java_home = java_home;
    }

    public static String getPasswordDB() {
        return passwordDB;
    }

    public static void setPasswordDB(String passwordDB) {
        Sesion.passwordDB = passwordDB;
    }

    public static String getUserDB() {
        return userDB;
    }

    public static void setUserDB(String userDB) {
        Sesion.userDB = userDB;
    }

    public static String getDatabaseDB() {
        return databaseDB;
    }

    public static void setDatabaseDB(String databaseDB) {
        Sesion.databaseDB = databaseDB;
    }

    public static String getPuertoDB() {
        return puertoDB;
    }

    public static void setPuertoDB(String puertoDB) {
        Sesion.puertoDB = puertoDB;
    }

    public static String getVersionLocalIngresos() {
        return versionLocalIngresos;
    }

    public static void setVersionLocalIngresos(String versionLocalIngresos) {
        Sesion.versionLocalIngresos = versionLocalIngresos;
    }

    public static String getVersionWebIngresos() {
        return versionWebIngresos;
    }

    public static void setVersionWebIngresos(String versionWebIngresos) {
        Sesion.versionWebIngresos = versionWebIngresos;
    }

    public Sesion() {
        try {
            //  imagenFondo = new javax.swing.ImageIcon(getClass().getResource("/ingresos/gif/fondos/suse2.jpg")); // NOI18N
           
  //            imagenFondo = new javax.swing.ImageIcon(getClass().getResource("/ingresos/gif/fondos/horizonte.jpg")); // NOI18N
           //       imagenFondo = new javax.swing.ImageIcon(getClass().getResource("/ingresos/gif/fondos/Linux007.jpg"));
   //               JOptionPane.showMessageDialog(null, "imagen");
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "Sesion");
            
        }
    }

    public static String getSeleccionado() {
        return Seleccionado;
    }

    public static void setSeleccionado(String Seleccionado) {
        Sesion.Seleccionado = Seleccionado;
    }

    public static String[] getArrayRecibosTableComentario() {
        return ArrayRecibosTableComentario;
    }

    public static void setArrayRecibosTableComentario(String[] ArrayRecibosTableComentario) {
        Sesion.ArrayRecibosTableComentario = ArrayRecibosTableComentario;
    }

    public static Double[] getArrayRecibosTableSaldoAnterior() {
        return ArrayRecibosTableSaldoAnterior;
    }

    public static void setArrayRecibosTableSaldoAnterior(Double[] ArrayRecibosTableSaldoAnterior) {
        Sesion.ArrayRecibosTableSaldoAnterior = ArrayRecibosTableSaldoAnterior;
    }

    public static Double[] getArrayRecibosTableSoloMorosidad() {
        return ArrayRecibosTableSoloMorosidad;
    }

    public static void setArrayRecibosTableSoloMorosidad(Double[] ArrayRecibosTableSoloMorosidad) {
        Sesion.ArrayRecibosTableSoloMorosidad = ArrayRecibosTableSoloMorosidad;
    }

    public static String getRutaBackup() {
        return rutaBackup;
    }

    public static void setRutaBackup(String rutaBackup) {
        Sesion.rutaBackup = rutaBackup;
    }

    public static int getNumeroMesRecibo() {
        return NumeroMesRecibo;
    }

    public static void setNumeroMesRecibo(int NumeroMesRecibo) {
        Sesion.NumeroMesRecibo = NumeroMesRecibo;
    }

    public static int getAnioRecibo() {
        return AnioRecibo;
    }

    public static void setAnioRecibo(int AnioRecibo) {
        Sesion.AnioRecibo = AnioRecibo;
    }

    public static String getTipoId() {
        return TipoId;
    }

    public static void setTipoId(String TipoId) {
        Sesion.TipoId = TipoId;
    }

    public static String getId() {
        return id;
    }

    public static void setId(String id) {
        Sesion.id = id;
    }

    public static ImageIcon getImagenFondo() {
        return imagenFondo;
    }

    public static void setImagenFondo(ImageIcon imagenFondo) {
        Sesion.imagenFondo = imagenFondo;
    }

    public static Double[] getArrayRecibosTableValor() {
        return ArrayRecibosTableValor;
    }

    public static void setArrayRecibosTableValor(Double[] ArrayRecibosTableValor) {
        Sesion.ArrayRecibosTableValor = ArrayRecibosTableValor;
    }

    public static int[] getArrayRecibosTableCantidad() {
        return ArrayRecibosTableCantidad;
    }

    public static void setArrayRecibosTableCantidad(int[] ArrayRecibosTableCantidad) {
        Sesion.ArrayRecibosTableCantidad = ArrayRecibosTableCantidad;
    }

    public static String[] getArrayRecibosTableEsRecargo() {
        return ArrayRecibosTableEsRecargo;
    }

    public static void setArrayRecibosTableEsRecargo(String[] ArrayRecibosTableEsRecargo) {
        Sesion.ArrayRecibosTableEsRecargo = ArrayRecibosTableEsRecargo;
    }

    public static int getNumeroMaximoRegistrosPorRecibo() {
        return NumeroMaximoRegistrosPorRecibo;
    }

    public static void setNumeroMaximoRegistrosPorRecibo(int NumeroMaximoRegistrosPorRecibo) {
        Sesion.NumeroMaximoRegistrosPorRecibo = NumeroMaximoRegistrosPorRecibo;
    }

    public static Double[] getArrayRecibosTableDeuda() {
        return ArrayRecibosTableDeuda;
    }

    public static void setArrayRecibosTableDeuda(Double[] ArrayRecibosTableDeuda) {
        Sesion.ArrayRecibosTableDeuda = ArrayRecibosTableDeuda;
    }

    public static String[] getArrayRecibosTableEstatus() {
        return ArrayRecibosTableEstatus;
    }

    public static void setArrayRecibosTableEstatus(String[] ArrayRecibosTableEstatus) {
        Sesion.ArrayRecibosTableEstatus = ArrayRecibosTableEstatus;
    }

    public static Double[] getArrayRecibosTableExoneracion() {
        return ArrayRecibosTableExoneracion;
    }

    public static void setArrayRecibosTableExoneracion(Double[] ArrayRecibosTableExoneracion) {
        Sesion.ArrayRecibosTableExoneracion = ArrayRecibosTableExoneracion;
    }

    public static String[] getArrayRecibosTableIdRegimen() {
        return ArrayRecibosTableIdRegimen;
    }

    public static void setArrayRecibosTableIdRegimen(String[] ArrayRecibosTableIdRegimen) {
        Sesion.ArrayRecibosTableIdRegimen = ArrayRecibosTableIdRegimen;
    }

    public static Double[] getArrayRecibosTablePagos() {
        return ArrayRecibosTablePagos;
    }

    public static void setArrayRecibosTablePagos(Double[] ArrayRecibosTablePagos) {
        Sesion.ArrayRecibosTablePagos = ArrayRecibosTablePagos;
    }

    public static String[] getArrayRecibosTablePeriodo() {
        return ArrayRecibosTablePeriodo;
    }

    public static void setArrayRecibosTablePeriodo(String[] ArrayRecibosTablePeriodo) {
        Sesion.ArrayRecibosTablePeriodo = ArrayRecibosTablePeriodo;
    }

    public static String[] getArrayRecibosTableRegimen() {
        return ArrayRecibosTableRegimen;
    }

    public static void setArrayRecibosTableRegimen(String[] ArrayRecibosTableRegimen) {
        Sesion.ArrayRecibosTableRegimen = ArrayRecibosTableRegimen;
    }

    public static Double[] getArrayRecibosTableSaldo() {
        return ArrayRecibosTableSaldo;
    }

    public static void setArrayRecibosTableSaldo(Double[] ArrayRecibosTableSaldo) {
        Sesion.ArrayRecibosTableSaldo = ArrayRecibosTableSaldo;
    }

    public static int getNumeroRegistrosRecibosTable() {
        return NumeroRegistrosRecibosTable;
    }

    public static void setNumeroRegistrosRecibosTable(int NumeroRegistrosRecibosTable) {
        Sesion.NumeroRegistrosRecibosTable = NumeroRegistrosRecibosTable;
    }

    public static String getRutaDescarga() {
        return rutaDescarga;
    }

    public static void setRutaDescarga(String rutaDescarga) {
        Sesion.rutaDescarga = rutaDescarga;
    }

    public static int getRegistrosPorRecibo() {
        return RegistrosPorRecibo;
    }

    public static void setRegistrosPorRecibo(int RegistrosPorRecibo) {
        Sesion.RegistrosPorRecibo = RegistrosPorRecibo;
    }

    public static String getRegimen() {
        return Regimen;
    }

    public static void setRegimen(String Regimen) {
        Sesion.Regimen = Regimen;
    }

    public static int getAnio() {
        return Anio;
    }

    public static void setAnio(int Anio) {
        Sesion.Anio = Anio;
    }

    public static String getPeriodoPago() {
        return PeriodoPago;
    }

    public static void setPeriodoPago(String PeriodoPago) {
        Sesion.PeriodoPago = PeriodoPago;
    }

    public static String getCedulaContribuyente() {
        return CedulaContribuyente;
    }

    public static void setCedulaContribuyente(String CedulaContribuyente) {
        Sesion.CedulaContribuyente = CedulaContribuyente;
    }

    public static String getIdRegimen() {
        return IdRegimen;
    }

    public static void setIdRegimen(String IdRegimen) {
        Sesion.IdRegimen = IdRegimen;
    }

    public static String[] getArrayMeses() {
        return ArrayMeses;
    }

    public static void setArrayMeses(String[] ArrayMeses) {
        Sesion.ArrayMeses = ArrayMeses;
    }

    public static String getRutaDestino() {
        return rutaDestino;
    }

    public static void setRutaDestino(String rutaDestino) {
        Sesion.rutaDestino = rutaDestino;
    }

    public static String getRutaReportes() {
        return rutaReportes;
    }

    public static void setRutaReportes(String rutaReportes) {
        Sesion.rutaReportes = rutaReportes;
    }

    public static String getSistemaOperativo() {
        return sistemaOperativo;
    }

    public static void setSistemaOperativo(String sistemaOperativo) {
        Sesion.sistemaOperativo = sistemaOperativo;
    }

    public static String getIdprovincia() {
        return idprovincia;
    }

    public static void setIdprovincia(String idprovincia) {
        Sesion.idprovincia = idprovincia;
    }

    public static String getVersion() {
        return version;
    }

    public static void setVersion(String version) {
        Sesion.version = version;
    }

    public Connection getCon() {
        return con;
    }

    public void setCon(Connection con) {
        this.con = con;
    }

    public static String getServer() {
        return server;
    }

    public static void setServer(String server) {
        Sesion.server = server;
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public static String getError() {
        return error;
    }

    public static void setError(String error) {
        Sesion.error = error;
    }

    public static String getLook() {
        return look;
    }

    public static void setLook(String look) {
        Sesion.look = look;
    }

    public static String getIdgrupousuario() {
        return idgrupousuario;
    }

    public static void setIdgrupousuario(String idgrupousuario) {
        Sesion.idgrupousuario = idgrupousuario;
    }

    public static String getIdmunicipio() {
        return idmunicipio;
    }

    public static void setIdmunicipio(String idmunicipio) {
        Sesion.idmunicipio = idmunicipio;
    }

    public static String getUsername() {
        return username;
    }

    public static void setUsername(String username) {
        Sesion.username = username;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public static String getMunicipio() {
        return municipio;
    }

    public static void setMunicipio(String municipio) {
        Sesion.municipio = municipio;
    }

    public boolean Conectar() {
        try {

            Class.forName(driver).newInstance();
            //String url = "jdbc:mysql://" + this.server + "/sirmupadb";
            String url = "jdbc:mysql://" + this.server + "/" + databaseDB;

            //con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sirmupadb", "root", "denver");
            //con = DriverManager.getConnection(url, "root", "denver");

            con = DriverManager.getConnection(url, userDB, passwordDB);

            if (con == null) {
                System.out.println("No se pudo establecer la conexion ");
                return false;
            }
            return true;

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Clase:Sesion.java\nMetodo:Conectar()\n No se puede establecer la conexion verifique la base de datos \n o el archivo servidor.xml\n\n" + ex.getMessage().toString());
            System.exit(1);
        }
        return false;
    }

    public boolean TablaExiste(String tabla) {

        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            DatabaseMetaData dbMetaData = con.getMetaData();
            ResultSet tables = dbMetaData.getTables(null, null, tabla, null);
            if (tables.next()) {
                return true;
            } else {

                return false;
            }

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nTablaExiste()\n" + ex.getMessage().toString());
        }

        return false;
    }

    public boolean TablaEliminar(String tabla) {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            String sql = "drop table " + tabla;
            Statement sta = con.createStatement();
            sta.executeUpdate(sql);
            // System.out.println("Eliminando :->" + tabla);

            return true;

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nTablaEliminar()\n" + ex.getMessage().toString());
        }

        return false;

    }

    public boolean EjecutarComando(String sql, String texto) {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            //     System.out.println("comando:-> " +sql);
            //   System.out.println("comando ->: " + texto);
            Statement sta = con.createStatement();
            sta.executeUpdate(sql);
            con.close();
            return true;
        } catch (Exception ex) {

            MostrarMensajeError("Error", "Sesion.java\nEjecutarComando()\nError:" + ex.getMessage().toString());
        }

        return false;

    }

    public String getNombreMes(int numeromes) {
        try {
            if (numeromes == 12) {
                numeromes = 0;
            }
            return ArrayMeses[numeromes];
        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\ngetNombreMes()\n" + ex.getMessage().toString());
        }
        return "";
    }

    /*
     *devuelve el numero de mes
     */
    public int getNumeroMes(String mes) {
        try {
            for (int i = 0; i <= 11; i++) {
                if (ArrayMeses[i].equals(mes)) {
                    return i;
                }
            }

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\ngetNumeroMes()\n" + ex.getMessage().toString());
        }
        return -1;
    }

    /*
     *Limpìar Tablas Temporales 
     */
    public void LimpiarTemporales() {

        LimpiarRecibesContabilidadTemporal();
        LimpiarTemporalMorosidadMensual();
        LimpiarTemporalPagosMensuales();
        LimpiarTemporalRemolquesPlacas();
        LimpiarTemporalVehiculosPlacas();

    }

    public void LimpiarTemporalesTodosRegistrados() {
        try {

            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }

            String sqldelete = "delete from recibescontabilidadtemporal";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.executeUpdate();

            sqldelete = "delete from recibescontabilidadtemporalinformes";
        psquery = con.prepareStatement(sqldelete);
            psquery.executeUpdate();

            sqldelete = "delete from temporalmorosidadmensual ";
            psquery = con.prepareStatement(sqldelete);
            psquery.executeUpdate();




            sqldelete = "delete from temporalpagosmensuales ";
            psquery = con.prepareStatement(sqldelete);
psquery.executeUpdate();

sqldelete = "delete from temporalvehiculosplacas ";
            psquery = con.prepareStatement(sqldelete);
            psquery.executeUpdate();

           sqldelete = "delete from temporalinformespagosmensuales ";
             psquery = con.prepareStatement(sqldelete);
            psquery.executeUpdate();

            con.close();
        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarTemporalMorosidadMensual()\n" + ex.getMessage().toString());
        }
    }

    private void LimpiarRecibesContabilidadTemporal() {
        try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sqldelete = "delete from recibescontabilidadtemporal where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();

             sqldelete = "delete from recibescontabilidadtemporalinformes where idmunicipio = ? and username =?";
            psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();

            sqldelete = "delete from temporalimpuestospagar where idmunicipio = ? and username =?";
            psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);
            psquery.executeUpdate();


             sqldelete = "delete from temporalinformespagosmensuales where idmunicipio = ? and username =?";
              psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);
            psquery.executeUpdate();
            
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarRecibesContabilidadTemporal()\n" + ex.getMessage().toString());
        }
    }


    public void LimpiarTemporalImpuestosPagar(){
         try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }

            String sqldelete = "delete from temporalimpuestospagar where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarRecibesContabilidadTemporal()\n" + ex.getMessage().toString());
        }
    }
    public void LimpiarTemporalMorosidadMensual() {
        try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sqldelete = "delete from temporalmorosidadmensual where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarTemporalMorosidadMensual()\n" + ex.getMessage().toString());
        }
    }

    private void LimpiarTemporalPagosMensuales() {
        try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sqldelete = "delete from temporalpagosmensuales where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarRecibesContabilidadTemporal()\n" + ex.getMessage().toString());
        }
    }

    private void LimpiarTemporalRemolquesPlacas() {
        try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sqldelete = "delete from temporalremolquesplacas where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarTemporalRemolquesPlacas()\n" + ex.getMessage().toString());
        }
    }

    private void LimpiarTemporalVehiculosPlacas() {
        try {


            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sqldelete = "delete from temporalvehiculosplacas where idmunicipio = ? and username =?";
            PreparedStatement psquery = con.prepareStatement(sqldelete);
            psquery.setString(1, this.idmunicipio);
            psquery.setString(2, this.username);

            psquery.executeUpdate();
            con.close();

        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nLimpiarTemporalVehiculosPlacas()\n" + ex.getMessage().toString());
        }
    }

    /*
     *
     * Obtiene el numero de mes
     * 0-enero ... 11 diciembre
     * -1 si no encuentra
     */
    public int ObtenerNumeroMes(String mes) {
        try {
            if (mes.equals("enero")) {
                return 0;
            }
            if (mes.equals("febrero")) {
                return 1;
            }

            if (mes.equals("marzo")) {
                return 2;
            }
            if (mes.equals("abril")) {
                return 3;
            }
            if (mes.equals("mayo")) {
                return 4;
            }
            if (mes.equals("junio")) {
                return 5;
            }
            if (mes.equals("julio")) {
                return 6;
            }
            if (mes.equals("agosto")) {
                return 7;
            }
            if (mes.equals("septiembre")) {
                return 8;
            }
            if (mes.equals("octubre")) {
                return 9;
            }
            if (mes.equals("noviembre")) {
                return 10;
            }
            if (mes.equals("diciembre")) {
                return 11;
            }
        } catch (Exception ex) {
            MostrarMensajeError("Error", "Sesion.java\nObtenerNumeroMes()\n" + ex.getMessage().toString());

        }
        return -1;
    }

    public void MostrarMensajeAdvertencia(String titulo, String texto) {

        javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
        JTextArea textArea = new JTextArea(texto, 3, 35);
        textArea.setEditable(false);
        textArea.setBackground(new java.awt.Color(239, 231, 233));
        textArea.setColumns(35);
        textArea.setRows(5);
        jScrollPane1.setViewportView(textArea);

        JOptionPane.showMessageDialog(null, jScrollPane1, titulo, JOptionPane.WARNING_MESSAGE);


    }

    public void MostrarMensajeInformacion(String titulo, String texto) {
        javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
        JTextArea textArea = new JTextArea(texto, 3, 35);
        textArea.setEditable(false);
        textArea.setBackground(new java.awt.Color(239, 231, 233));
        textArea.setColumns(35);
        textArea.setRows(5);
        jScrollPane1.setViewportView(textArea);

        JOptionPane.showMessageDialog(null, jScrollPane1, titulo, JOptionPane.INFORMATION_MESSAGE);

    }

    public void MostrarMensajeError(String titulo, String texto) {


        javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
        jScrollPane1.setBackground(new java.awt.Color(178, 215, 231));
        JTextArea textArea = new JTextArea(texto, 3, 35);
        textArea.setEditable(false);
        //   textArea.setBackground(new java.awt.Color(239, 231, 233));
        textArea.setColumns(35);
        textArea.setRows(5);
        jScrollPane1.setViewportView(textArea);

        JOptionPane.showMessageDialog(null, jScrollPane1, titulo, JOptionPane.ERROR_MESSAGE);

    }

    public boolean ConsultarComandosSQL(String versioncomandosql) {
        try {
            boolean encontrado = false;
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            String sqlquery = "select *  from comandos  where  version =?";
            PreparedStatement psquery = con.prepareStatement(sqlquery);
            psquery.setString(1, versioncomandosql);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                encontrado = false;
            } else {
                encontrado = true;

            }
            con.close();
            return encontrado;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: ConsultarComandosSQL()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }

    }

    /*
     * inserta el numero de version del comando ejecutado
     * en la tabla comandos
     *
     */
    public void InsertarNumeroVersionComandosSQL(String versioncomandosql) {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }

            String sqlquery = "insert into comandos  values(?)";

            PreparedStatement prest = con.prepareStatement(sqlquery);

            prest.setString(1, versioncomandosql);
            int count = prest.executeUpdate();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: InsertarComandosSQL()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

        }

    }

    /*
     * verifica si ya fueron encriptados los password
     *
     */
    public boolean ConsultarEncriptado() {
        try {
            boolean encontrado = false;
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }

            String sqlquery = "select *  from encriptacion";
            PreparedStatement psquery = con.prepareStatement(sqlquery);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();
            if (x == 0) {
                encontrado = false;
            } else {
                encontrado = true;

            }
            con.close();
            return encontrado;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: ConsultarEncriptado()()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }

    }

    public void EncriptarTodosPassword() {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }

            String sqlquery = "select * from usuarios";
            PreparedStatement psquery = con.prepareStatement(sqlquery);
            ResultSet rs = psquery.executeQuery();
            rs.last();
            int tnumeroRegistros = rs.getRow();
            String[] tUsername = new String[tnumeroRegistros];
            String[] tPassword = new String[tnumeroRegistros];
            String[] tEncriptado = new String[tnumeroRegistros];
            rs.beforeFirst();
            int i = 0;
            Encriptador encrypter = new Encriptador();
            while (rs.next()) {
                tUsername[i] = rs.getString("username");
                tPassword[i] = rs.getString("password");
                tEncriptado[i] = encrypter.encrypt(tPassword[i]);
                i++;
            }
            con.close();



            // Encrypt

            for (int j = 0; j < tnumeroRegistros; j++) {
                String sql = "update usuarios set password ='" + tEncriptado[j] + "' where username='" + tUsername[j] + "'";

                EjecutarComando(sql, "encriptando password");

            }

            //registro que se encripto bien
            InsertarEncriptacionExitosa();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: EncriptarTodosPassword()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }

    }

    /*
     * inserta el valor de si indicando que se encriptaron todos los password
     *
     */
    public int NumeroRegistrosTabla(String sql) {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return 0;
            }

            PreparedStatement psquery = con.prepareStatement(sql);
            ResultSet rs = psquery.executeQuery();
            rs.last();
            int numeroRegistros = rs.getRow();
            return numeroRegistros;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: NumeroRegistrosTabla()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            return 0;
        }

    }

    public void InsertarEncriptacionExitosa() {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }

            String sqlquery = "insert into encriptacion  values(?)";

            PreparedStatement prest = con.prepareStatement(sqlquery);

            prest.setString(1, "si");
            int count = prest.executeUpdate();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase: Sesion.java\nMetodo: InsertarEncriptacionExitosa()\nError: " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

        }

    }

    /*
     *
     * devuelve el nombre del municipio ,en base al codigo pasado
     */
    public String BuscarMunicipiosCodigo(String municipio) {
        try {
            if (Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return "";
            }

            String sqlquery = "select * from municipies where idmunicipio = ? ";
            PreparedStatement psquery = con.prepareStatement(sqlquery);
            psquery.setString(1, municipio);

            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();

            if (x == 0) {
                JOptionPane.showMessageDialog(null, "no existe un municipio ese codigo", "Mensaje", JOptionPane.INFORMATION_MESSAGE);

                return "";
            }



            String nombremunicipio = rs.getString("municipio");
            con.close();
            return nombremunicipio;
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Error Cargando Corregimientos" + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        }
        return "";
    }

    public void EliminarTodosArchivosXML() {
        try {
            boolean exists = false;

            exists = (new File("look.xml")).exists();
            if (exists == false) {
                boolean success = (new File("look.xml")).delete();
                if (!success) {
                    // Deletion failed
                }
            }
            exists = (new File("servidor.xml")).exists();
            if (exists == false) {
                boolean success = (new File("servidor.xml")).delete();
                if (!success) {
                    // Deletion failed
                }
            }

            exists = (new File("versionesweb.xml")).exists();
            if (exists == false) {
                boolean success = (new File("versionesweb.xml")).delete();
                if (!success) {
                    // Deletion failed
                }
            }

            exists = (new File("versioneslocal.xml")).exists();
            if (exists == false) {
                boolean success = (new File("versioneslocal.xml")).delete();
                if (!success) {
                    // Deletion failed
                }
            }

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Clase:Sesion.java\nEliminarTodosArchivosXML()\nError:" + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);

        }
    }

  
} // class

